#include<iostream>
#include<future>
#include<thread>

//packaged_task 通过关联的future可以提前预定函数的返回值，直到packaged_task被执行，future就可以就绪
//packaged_task 会保证执行一次
//注意 packaged_task 在 thread 用 ref
int main(int n,char **agv)
{
    using std::cout,std::endl,std::promise,std::packaged_task,std::thread;
    
    thread th;
    packaged_task<int()> pd
    (
    []()->int
    {
        cout<<"packaged_task"<<endl;
        return 1;
    }
    );
    
    th=thread(ref(pd));
    cout<<pd.get_future().get();
    th.join();
    
    return 0;
}